perm filename IMLHAK.BO[UP,DOC] blob
sn#065751 filedate 1973-10-09 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00004 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 HACKER'S-EYE VIEW OF PDP-10/IMLAC COMMUNICATION
C00006 00003 RECENT TTYSER MODS TO SUPPORT IMLACS
C00008 00004 SUMMARY OF COMMANDS TO THE IMLAC (all prefixed with a rubout)
C00011 ENDMK
C⊗;
HACKER'S-EYE VIEW OF PDP-10/IMLAC COMMUNICATION
FROM THE IMLAC TO THE 10:
The TTY-like communication line between the two machines handles
8-bit characters. Since our system's character set uses a 7-bit
code and TTYSER masks out the 8th bit, a small mod to TTYSER allowed
some extra information to come across. The IMLAC sends ordinary
data as 7 bits with the 8th set to zero. This allows all 127 data
characters (nulls excluded) to be shipped. Control characters have
the eigth bit set to one, and TTYSER recognizes that combination.
Thus, the code for a β is 003 and goes through TTYSER as a β, while
the code 203 becomes ↑C. Special characters with the 8th bit on
which have no recognized function in TTYSER get the extra bit masked
out.
TTYSER MOD #1: the new IMLAC program, in character mode, can send
the bucky bits as octal codes 241-243. Have changed TTYSER to
recognize these codes as a prefix and add the appropriate bits to
the following character. The bits are saved in bits 34:35 of word
IMLHAC in the TTY DDB.
FROM THE 10 TO THE IMLAC:
TTYSER (God rot it) keeps output buffers for devices on the 630 in
7-bit bytes and adds even parity at the last moment before sending a
character. Rather than change that practice, I decided to develop a
command structure within the 7-bit restriction and use the parity to
check for a valid command. The FIVOUT UUO (TTYUUO 17,) is designed
for this purpose. It sends the addressed word as up to 5
inseparable characters, prefixed with a rubout if the word's
low-order bit is a 1. The output from FIVOUT terminates on the
first null in the word for less than 5 character output.
The IMLAC recognizes a rubout as a signal that a command follows.
The next character received is the command, and it either implies a
count of how many more characters are needed to finish the command
or it contains an explicit count in its low-order 3 bits. This
count can be from 0 to 7, but because of the size of the data that
FIVOUT uses the practical limits are 0 to 4. The IMLAC checks
parity on all received characters. A command must be received with
correct parity on all of its component characters (including the
rubout), or the IMLAC will merely display it and not execute it.
RECENT TTYSER MODS TO SUPPORT IMLACS
(See next page for descriptions of commands)
#2. INCHRW (TTYUUO 0) checks whether there is anything in the TTY
input buffer. If not, it sends a 001 command before going into
IOWQ.
#3. INCHWL (TTYUUO 4), in special activation mode, checks for
activators in the TTY input buffer. If there are none, it sends a
002 command before going into IOWQ. NOTE: only the standard SPACTN
table (anything but a letter or a digit) is available.
#4. PTLOAD (PTYUUO 15) loads the IMLAC's edit buffer using 061-064
commands and ending with a 005. WARNING: IWAIT will not return the
length of the re-edited line as it does for DD displays.
#5. PTWR1W (PTYUUO 7) looks for the codes for <CTL>[SPACE] and
<CTL>[TAB]. It sends the first as command 006,001 (space forward 1)
and the second as 006,176 (space forward a bunch). Other codes do
exactly the same thing as before.
SUMMARY OF COMMANDS TO THE IMLAC (all prefixed with a rubout)
OCTAL NO. OF
CHAR CODE OPERANDS FUNCTION
λ 010 0 __ Print a center dot (the hidden code for the
null)
TAB 011 0 \
LF 012 0 |
VT 013 0 | Print that char the way DD does it when
FF 014 0 | prefixed with a rubout.
CR 015 0 __/
∞ 016 0 No-op
∂ 017 0 Print a BS char as on the DD.
1-7 060+n n Enter re-edit mode, clear the edit buffer if
mode wasn't re-edit, and add the following n
characters to the edit line as if the user
had typed them. Re-edit mode locks out the
IMLAC keyboard except the CALL, ESC, BREAK,
and CLEAR keys.
0 060 0 Enter line mode. Used to terminate re-edit
mode and leave the cursor at the right end
of the line.
∧ 004 0 Move the cursor to the left end of the line.
This command does not terminate re-edit
mode.
¬ 005 0 Same as 004, but terminates re-edit mode.
ε 006 1 Move the cursor right the number of positions
specified by the octal code of the following
character, then terminate re-edit mode.
π 007 0 Clear edit line, terminate re-edit.
↓ 001 0 INCHRW. If the edit buffer is not empty and
the cursor is not at the left end, send the
first char from the buffer. Otherwise, set
the break table to activate on the next char
typed.
α 002 0 DDT mode INCHWL. If the edit buffer
contains a word-mode break char to the left
of the cursor, then send the first part of
the buffer up to and including the first
such char. Otherwise, set the break table
to activate on the next such char typed.
β 003 0 Enter character mode.
The IMLAC reverts to line mode after complying with the 001 and 002
commands. (These commands are no-ops in Character mode.)